home *** CD-ROM | disk | FTP | other *** search
-
-
-
- ED User Commands ED
-
-
-
- NNAAMMEE
- ed - text editor
-
- SSYYNNOOPPSSIISS
- eedd [ -- ] [ --xx ] [ name ]
-
- DDEESSCCRRIIPPTTIIOONN
- _E_d is the standard text editor.
-
- If a _n_a_m_e argument is given, _e_d simulates an _e command (see
- below) on the named file; that is to say, the file is read
- into _e_d'_s buffer so that it can be edited. If --xx is
- present, an _x command is simulated first to handle an
- encrypted file. The optional -- suppresses the printing of
- explanatory output and should be used when the standard
- input is an editor script.
-
- _E_d operates on a copy of any file it is editing; changes
- made in the copy have no effect on the file until a _w
- (write) command is given. The copy of the text being edited
- resides in a temporary file called the _b_u_f_f_e_r.
-
- Commands to _e_d have a simple and regular structure: zero or
- more _a_d_d_r_e_s_s_e_s followed by a single character _c_o_m_m_a_n_d, pos-
- sibly followed by parameters to the command. These
- addresses specify one or more lines in the buffer. Missing
- addresses are supplied by default.
-
- In general, only one command may appear on a line. Certain
- commands allow the addition of text to the buffer. While _e_d
- is accepting text, it is said to be in _i_n_p_u_t _m_o_d_e. In this
- mode, no commands are recognized; all input is merely col-
- lected. Input mode is left by typing a period `..' alone at
- the beginning of a line.
-
- _E_d supports a limited form of _r_e_g_u_l_a_r _e_x_p_r_e_s_s_i_o_n notation.
- A regular expression specifies a set of strings of charac-
- ters. A member of this set of strings is said to be _m_a_t_c_h_e_d
- by the regular expression. In the following specification
- for regular expressions the word `character' means any char-
- acter but newline.
-
- 1. Any character except a special character matches
- itself. Special characters are the regular expression
- delimiter plus \[.. and sometimes ^*$.
-
- 2. A .. matches any character.
-
- 3. A \ followed by any character except a digit or ()
- matches that character.
-
- 4. A nonempty string _s bracketed [_s] (or [^_s]) matches any
-
-
-
- Sprite v1.0 April 29, 1985 1
-
-
-
-
-
-
- ED User Commands ED
-
-
-
- character in (or not in) _s. In _s, \ has no special
- meaning, and ] may only appear as the first letter. A
- substring _a-_b, with _a and _b in ascending ASCII order,
- stands for the inclusive range of ASCII characters.
-
- 5. A regular expression of form 1-4 followed by * matches
- a sequence of 0 or more matches of the regular expres-
- sion.
-
- 6. A regular expression, _x, of form 1-8, bracketed \(_x\)
- matches what _x matches.
-
- 7. A \ followed by a digit _n matches a copy of the string
- that the bracketed regular expression beginning with
- the _nth \( matched.
-
- 8. A regular expression of form 1-8, _x, followed by a reg-
- ular expression of form 1-7, _y matches a match for _x
- followed by a match for _y, with the _x match being as
- long as possible while still permitting a _y match.
-
- 9. A regular expression of form 1-8 preceded by ^ (or fol-
- lowed by $), is constrained to matches that begin at
- the left (or end at the right) end of a line.
-
- 10. A regular expression of form 1-9 picks out the longest
- among the leftmost matches in a line.
-
- 11. An empty regular expression stands for a copy of the
- last regular expression encountered.
-
- Regular expressions are used in addresses to specify lines
- and in one command (see _s below) to specify a portion of a
- line which is to be replaced. If it is desired to use one
- of the regular expression metacharacters as an ordinary
- character, that character may be preceded by `\'. This also
- applies to the character bounding the regular expression
- (often `/') and to `\' itself.
-
- To understand addressing in _e_d it is necessary to know that
- at any time there is a _c_u_r_r_e_n_t _l_i_n_e. Generally speaking, the
- current line is the last line affected by a command; how-
- ever, the exact effect on the current line is discussed
- under the description of the command. Addresses are con-
- structed as follows.
-
- 1. The character `..' addresses the current line.
-
- 2. The character `$' addresses the last line of the
- buffer.
-
- 3. A decimal number _n addresses the _n-th line of the
-
-
-
- Sprite v1.0 April 29, 1985 2
-
-
-
-
-
-
- ED User Commands ED
-
-
-
- buffer.
-
- 4. `'_x' addresses the line marked with the name _x, which
- must be a lower-case letter. Lines are marked with the
- _k command described below.
-
- 5. A regular expression enclosed in slashes `/' addresses
- the line found by searching forward from the current
- line and stopping at the first line containing a string
- that matches the regular expression. If necessary the
- search wraps around to the beginning of the buffer.
-
- 6. A regular expression enclosed in queries `?' addresses
- the line found by searching backward from the current
- line and stopping at the first line containing a string
- that matches the regular expression. If necessary the
- search wraps around to the end of the buffer.
-
- 7. An address followed by a plus sign `+' or a minus sign
- `-' followed by a decimal number specifies that address
- plus (resp. minus) the indicated number of lines. The
- plus sign may be omitted.
-
- 8. If an address begins with `+' or `-' the addition or
- subtraction is taken with respect to the current line;
- e.g. `-5' is understood to mean `..-5'.
-
- 9. If an address ends with `+' or `-', then 1 is added
- (resp. subtracted). As a consequence of this rule and
- rule 8, the address `-' refers to the line before the
- current line. Moreover, trailing `+' and `-' charac-
- ters have cumulative effect, so `--' refers to the
- current line less 2.
-
- 10. To maintain compatibility with earlier versions of the
- editor, the character `^' in addresses is equivalent to
- `-'.
-
- Commands may require zero, one, or two addresses. Commands
- which require no addresses regard the presence of an address
- as an error. Commands which accept one or two addresses
- assume default addresses when insufficient are given. If
- more addresses are given than such a command requires, the
- last one or two (depending on what is accepted) are used.
-
- Addresses are separated from each other typically by a comma
- `,,'. They may also be separated by a semicolon `;;'. In
- this case the current line `..' is set to the previous
- address before the next address is interpreted. This
- feature can be used to determine the starting line for for-
- ward and backward searches (`/', `?'). The second address
- of any two-address sequence must correspond to a line
-
-
-
- Sprite v1.0 April 29, 1985 3
-
-
-
-
-
-
- ED User Commands ED
-
-
-
- following the line corresponding to the first address. The
- special form `%' is an abbreviation for the address pair
- `1,$'.
-
- In the following list of _e_d commands, the default addresses
- are shown in parentheses. The parentheses are not part of
- the address, but are used to show that the given addresses
- are the default.
-
- As mentioned, it is generally illegal for more than one com-
- mand to appear on a line. However, most commands may be
- suffixed by `p' or by `l', in which case the current line is
- either printed or listed respectively in the way discussed
- below. Commands may also be suffixed by `n', meaning the
- output of the command is to be line numbered. These suf-
- fixes may be combined in any order.
-
- (..)a
- <text>
- ..
- The append command reads the given text and appends it
- after the addressed line. `..' is left on the last line
- input, if there were any, otherwise at the addressed
- line. Address `0' is legal for this command; text is
- placed at the beginning of the buffer.
-
- (.., ..)c
- <text>
- ..
- The change command deletes the addressed lines, then
- accepts input text which replaces these lines. `..' is
- left at the last line input; if there were none, it is
- left at the line preceding the deleted lines.
-
- (.., ..)d
- The delete command deletes the addressed lines from the
- buffer. The line originally after the last line
- deleted becomes the current line; if the lines deleted
- were originally at the end, the new last line becomes
- the current line.
-
- e filename
- The edit command causes the entire contents of the
- buffer to be deleted, and then the named file to be
- read in. `..' is set to the last line of the buffer.
- The number of characters read is typed. `filename' is
- remembered for possible use as a default file name in a
- subsequent _r or _w command. If `filename' is missing,
- the remembered name is used.
-
- E filename
- This command is the same as _e, except that no
-
-
-
- Sprite v1.0 April 29, 1985 4
-
-
-
-
-
-
- ED User Commands ED
-
-
-
- diagnostic results when no _w has been given since the
- last buffer alteration.
-
- f filename
- The filename command prints the currently remembered
- file name. If `filename' is given, the currently
- remembered file name is changed to `filename'.
-
- (1,$)g/regular expression/command list
- In the global command, the first step is to mark every
- line which matches the given regular expression. Then
- for every such line, the given command list is executed
- with `..' initially set to that line. A single command
- or the first of multiple commands appears on the same
- line with the global command. All lines of a multi-
- line list except the last line must be ended with `\'.
- _A, _i, and _c commands and associated input are permit-
- ted; the `..' terminating input mode may be omitted if
- it would be on the last line of the command list. The
- commands _g and _v are not permitted in the command list.
-
- (..)i
-
- <text>
- ..
- This command inserts the given text before the
- addressed line. `..' is left at the last line input,
- or, if there were none, at the line before the
- addressed line. This command differs from the _a com-
- mand only in the placement of the text.
-
- (.., ..+1)j
- This command joins the addressed lines into a single
- line; intermediate newlines simply disappear. `..' is
- left at the resulting line.
-
- ( .. )k_x
- The mark command marks the addressed line with name _x,
- which must be a lower-case letter. The address form
- `'_x' then addresses this line.
-
- (.., ..)l
- The list command prints the addressed lines in an unam-
- biguous way: non-graphic characters are printed in
- two-digit octal, and long lines are folded. The _l com-
- mand may be placed on the same line after any non-i/o
- command.
-
- (.., ..)m_a
- The move command repositions the addressed lines after
- the line addressed by _a. The last of the moved lines
- becomes the current line.
-
-
-
- Sprite v1.0 April 29, 1985 5
-
-
-
-
-
-
- ED User Commands ED
-
-
-
- (.., ..)p
- The print command prints the addressed lines. `..' is
- left at the last line printed. The _p command may be
- placed on the same line after any non-i/o command.
-
- (.., ..)P
- This command is a synonym for _p.
-
- q The quit command causes _e_d to exit. No automatic write
- of a file is done.
-
- Q This command is the same as _q, except that no diagnos-
- tic results when no _w has been given since the last
- buffer alteration.
-
- ($)r filename
- The read command reads in the given file after the
- addressed line. If no file name is given, the remem-
- bered file name, if any, is used (see _e and _f com-
- mands). The file name is remembered if there was no
- remembered file name already. Address `0' is legal for
- _r and causes the file to be read at the beginning of
- the buffer. If the read is successful, the number of
- characters read is typed. `..' is left at the last line
- read in from the file.
-
- ( .., ..)s/regular expression/replacement/ or,
- ( .., ..)s/regular expression/replacement/g
- The substitute command searches each addressed line for
- an occurrence of the specified regular expression. On
- each line in which a match is found, all matched
- strings are replaced by the replacement specified, if
- the global replacement indicator `g' appears after the
- command. If the global indicator does not appear, only
- the first occurrence of the matched string is replaced.
- It is an error for the substitution to fail on all
- addressed lines. Any punctuation character may be used
- instead of `/' to delimit the regular expression and
- the replacement. `..' is left at the last line substi-
- tuted.
-
- An ampersand `&' appearing in the replacement is
- replaced by the string matching the regular expression.
- The special meaning of `&' in this context may be
- suppressed by preceding it by `\'. The characters `_\_n'
- where _n is a digit, are replaced by the text matched by
- the _n-th regular subexpression enclosed between `\('
- and `\)'. When nested, parenthesized subexpressions
- are present, _n is determined by counting occurrences of
- `\(' starting from the left.
-
- Lines may be split by substituting new-line characters
-
-
-
- Sprite v1.0 April 29, 1985 6
-
-
-
-
-
-
- ED User Commands ED
-
-
-
- into them. The new-line in the replacement string must
- be escaped by preceding it by `\'.
-
- One or two trailing delimiters may be omitted, implying
- the `p' suffix. The special form `s' followed by _n_o
- delimiters repeats the most recent substitute command
- on the addressed lines. The `s' may be followed by the
- letters rr (use the most recent regular expression for
- the left hand side, instead of the most recent left
- hand side of a substitute command), pp (complement the
- setting of the _p suffix from the previous substitu-
- tion), or gg (complement the setting of the _g suffix).
- These letters may be combined in any order.
-
- (.., ..)t_a
- This command acts just like the _m command, except that
- a copy of the addressed lines is placed after address _a
- (which may be 0). `..' is left on the last line of the
- copy.
-
- (.., ..)u
- The undo command restores the buffer to it's state
- before the most recent buffer modifying command. The
- current line is also restored. Buffer modifying com-
- mands are _a, _c, _d, _g, _i, _k, and _v. For purposes of
- undo, _g and _v are considered to be a single buffer
- modifying command. Undo is its own inverse.
-
- When _e_d runs out of memory (at about 8000 lines on any
- 16 bit mini-computer such as the PDP-11) This full undo
- is not possible, and _u can only undo the effect of the
- most recent substitute on the current line. This res-
- tricted undo also applies to editor scripts when _e_d is
- invoked with the -- option.
-
- (1, $)v/regular expression/command list
- This command is the same as the global command _g except
- that the command list is executed _g with `..' initially
- set to every line _e_x_c_e_p_t those matching the regular
- expression.
-
- (1, $)w filename
- The write command writes the addressed lines onto the
- given file. If the file does not exist, it is created.
- The file name is remembered if there was no remembered
- file name already. If no file name is given, the
- remembered file name, if any, is used (see _e and _f com-
- mands). `..' is unchanged. If the command is success-
- ful, the number of characters written is printed.
-
- (1, $)W filename
- This command is the same as _w, except that the
-
-
-
- Sprite v1.0 April 29, 1985 7
-
-
-
-
-
-
- ED User Commands ED
-
-
-
- addressed lines are appended to the file.
-
- (1, $)wq filename
- This command is the same as _w except that afterwards a
- _q command is done, exiting the editor after the file is
- written.
-
- x A key string is demanded from the standard input.
- Later _r, _e and _w commands will encrypt and decrypt the
- text with this key by the algorithm of _c_r_y_p_t(1). An
- explicitly empty key turns off encryption.
- (..+1)z or,
- (..+1)z_n
- This command scrolls through the buffer starting at the
- addressed line. 22 (or _n, if given) lines are printed.
- The last line printed becomes the current line. The
- value _n is sticky, in that it becomes the default for
- future _z commands.
-
- ($)= The line number of the addressed line is typed. `..' is
- unchanged by this command.
-
- !<shell command>
- The remainder of the line after the `!' is sent to
- _s_h(1) to be interpreted as a command. `..' is
- unchanged.
-
- (..+1,..+1)<newline>
- An address alone on a line causes the addressed line to
- be printed. A blank line alone is equivalent to
- `.+1p'; it is useful for stepping through text. If two
- addresses are present with no intervening semicolon, _e_d
- prints the range of lines. If they are separated by a
- semicolon, the second line is printed.
-
- If an interrupt signal (ASCII DEL) is sent, _e_d prints
- `?interrupted' and returns to its command level.
-
- Some size limitations: 512 characters per line, 256 charac-
- ters per global command list, 64 characters per file name,
- and, on mini computers, 128K characters in the temporary
- file. The limit on the number of lines depends on the
- amount of core: each line takes 2 words.
-
- When reading a file, _e_d discards ASCII NUL characters and
- all characters after the last newline. It refuses to read
- files containing non-ASCII characters.
-
- FFIILLEESS
- /tmp/e*
- edhup: work is saved here if terminal hangs up
-
-
-
-
- Sprite v1.0 April 29, 1985 8
-
-
-
-
-
-
- ED User Commands ED
-
-
-
- SSEEEE AALLSSOO
- B. W. Kernighan, _A _T_u_t_o_r_i_a_l _I_n_t_r_o_d_u_c_t_i_o_n _t_o _t_h_e _E_D _T_e_x_t _E_d_i_-
- _t_o_r
- B. W. Kernighan, _A_d_v_a_n_c_e_d _e_d_i_t_i_n_g _o_n _U_N_I_X
- ex(1), sed(1), crypt(1)
-
- DDIIAAGGNNOOSSTTIICCSS
- `?name' for inaccessible file; `?self-explanatory message'
- for other errors.
-
- To protect against throwing away valuable work, a _q or _e
- command is considered to be in error, unless a _w has
- occurred since the last buffer change. A second _q or _e will
- be obeyed regardless.
-
- BBUUGGSS
- The _l command mishandles DEL.
- The _u_n_d_o command causes marks to be lost on affected lines.
- The _x command, --xx option, and special treatment of hangups
- only work on UNIX.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sprite v1.0 April 29, 1985 9
-
-
-
-